package com.hicorp.segment.service;

import com.hicorp.segment.utils.ResultBean;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface BasicMasterSubService {
    /**
     * 查询所有
     *
     * @param masterTableName 主表表名
     * @return 查询到的结果
     */
    Object queryInfo(String masterTableName);

    /**
     * 新增
     *
     * @param record    新增数据
     * @param masterTableName 主表表名
     * @param subTableName    子表表名
     * @param masterFiledName 主表键名
     * @param subFiledName    子表键名
     * @return 变更结果
     */
    ResultBean<Void> addRecord(Object record, String masterTableName, String subTableName, String masterFiledName, String subFiledName);

    /**
     * 主子表编辑
     * @param record 编辑的数据
     * @param masterTableName 主表表名
     * @param subTableName 子表表名
     * @param masterFiledName 主表键名
     * @param subFiledName 子表键名
     * @return 编辑结果(成功与否)
     */
    ResultBean<Void> editRecord(Object record, String masterTableName, String subTableName, String masterFiledName, String subFiledName);

    /**
     * 批量删除
     *
     * @param masterTableName 主表表名
     * @param ids             被删除的项的id集合
     * @return 删除结果
     */
    Object batchDeleteRecord(String masterTableName, List<Long> ids);

    /**
     * 按照某个字段进行搜索
     *
     * @param masterTableName 主表表名
     * @param fieldName       字段名
     * @param fieldValue      字段内容
     * @return 搜索的结果
     */
    Object selectRecords(String masterTableName, String fieldName, String fieldValue);
}
